package com.zatech.cgnci.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zatech.cgnci.project.dto.CgnciClaimCaseAddDTO;
import com.zatech.cgnci.project.dto.CgnciClaimCaseCheckDTO;
import com.zatech.cgnci.project.dto.CgnciClaimCaseQueryDTO;
import com.zatech.cgnci.project.dto.CgnciClaimCaseReopenDTO;
import com.zatech.cgnci.project.dto.ClaimCaseTaskQueryOptionDTO;
import com.zatech.cgnci.project.entity.CgnciClaimCaseTaskDO;
import com.zatech.cgnci.project.entity.UserEntity;
import com.zatech.cgnci.project.vo.*;

import java.util.List;

public interface CgnciClaimCaseTaskService extends IService<CgnciClaimCaseTaskDO> {


    /**
     * 获取案件详情
     */
    CgnciClaimCaseVO caseDetailTask(ClaimCaseTaskQueryOptionDTO<String> req);

    /**
     * 保存理赔案件
     */
    void saveClaimCaseTask(CgnciClaimCaseAddDTO addDTO);


    List<CgnciClaimReopenVO> getReopenHistory(String caseNo);


    CgnciClaimCaseCreateResultVO createCase(String policyNo, Boolean confirm);

    void submitCase(String taskNo);

    void approveCase(CgnciClaimCaseCheckDTO req);

    void backCase(CgnciClaimCaseCheckDTO req);

    void logOffCase(String taskNo);

    CgnciClaimCaseReopenVO reopenCase(CgnciClaimCaseReopenDTO req);
    CgnciClaimCaseTaskDO copyCreateCaseTask(UserEntity user, String caseNo,String taskNo, String taskType);
    void approveReopenCase(CgnciClaimCaseReopenDTO req);

    IPage<CgnciClaimCasePageWorkbenchVO> casePageTaskWorkbench(CgnciClaimCaseQueryDTO req);


    List<ApprovalConfigVO> listBackNode(String taskNo);

    CgnciClaimCaseTaskCountVO caseTaskCount();

    CgnciClaimCaseQuantityVO caseTaskQuantity();

    CaseStatusCountVO caseStatusCount(String taskType);
    void logOffReopenCase(String taskNo);

    String generateTaskNo();
    void submitReopenCase(String taskNo);

    void caseAfterSave(CgnciClaimCaseAddDTO req);

    void caseProcessCheck(String caseNo);
}